// static

#include <stdio.h>

int gAll = 12;

int f(void);

int main(int argc, char const *argv[])
{
    f();
    f();
    f();
    
    return 0;
}

int f(void)
{
    int k = 0;
    // 只在第一次进入函数时定义，之后会保持在函数中得到的值
    static int all = 1;

    printf("in %s all = %d\n", __func__, all);
    all += 2;
    printf("agn in %s all = %d\n", __func__, all);

    // 静态本地变量其实就是全局变量，存储位置相同，生存期相同
    // 但静态本地变量的作用域只有函数内
    printf("&all  = %p\n", &all);
    printf("&gAll = %p\n", &gAll);
    printf("&k    = %p\n", &k);

    return gAll;
}